home *** CD-ROM | disk | FTP | other *** search
/ PC Player 2004 May / pc player 2004-05.iso / Demos / FarCry / Data1.cab / _30FDA3EDBCDD40419F8DE82D7D0833B8 < prev    next >
Encoding:
Text File  |  2004-01-06  |  1.4 KB  |  38 lines

  1. // ===============================================================
  2. // Vertex Program:
  3. // Description:  2D shadow map pass with env radiosity
  4. // Last Update: 14/08/2003
  5. // Coder: Andrey Honich
  6. // ===============================================================
  7.  
  8.       #include "../CGVPMacro.csi"
  9.  
  10.       VertAttributes { POSITION_3 TEXCOORD0_2 TNORMAL_3 }
  11.  
  12.       NoFog      
  13.       MainInput { VIEWPROJ_MATRIX, uniform float4x4 TexGen0, uniform float4 EnvColors[6], uniform float4x4 TexMatrix }
  14.       DeclarationsScript
  15.       {
  16.         IN_T0_TN
  17.         OUT_T0_T1_C0
  18.       }
  19.       PositionScript = PosCommon                 
  20.       CoreScript
  21.       {
  22.         OUT.Tex0 = mul(TexGen0, vPos);          
  23.         OUT.Tex1.xy = IN.TexCoord0.xy;
  24.  
  25.         // Calculate average radiosity color from 6 colors (Cube)
  26.         float3 tNormal;
  27.         tNormal = mul((float3x3)TexMatrix, IN.TNormal.xyz);        
  28.         float3 Compare1 = step(tNormal, 0);
  29.         float3 Compare0 = 1 - Compare1;
  30.         float3 signN = sign(tNormal);
  31.         tNormal = tNormal * tNormal;
  32.         tNormal = tNormal * signN;
  33.         float4 ColorX = EnvColors[0]*tNormal.x*Compare0.x + EnvColors[1]*(-tNormal.x)*Compare1.x;
  34.         float4 ColorY = EnvColors[2]*tNormal.y*Compare0.y + EnvColors[3]*(-tNormal.y)*Compare1.y;
  35.         float4 ColorZ = EnvColors[4]*tNormal.z*Compare0.z + EnvColors[5]*(-tNormal.z)*Compare1.z;
  36.         OUT.Color = (ColorX + ColorY + ColorZ) * 2.0;
  37.       }
  38.